#define _CRT_SECURE_NO_WARNINGS


//#include <cstdlib>
//
//class A
//{
//public:
//	static int _a;
//};
//
////int a;
////static int b;
//
//int main()
//{
//	//int c = 1;
//	//static int d;
//	//int* e = (int*)malloc(4);
//	A a;
//	a._a = 1;
//
//
//	return 0;
//}

//#include <iostream>
//
//class A
//{
//public:
//    static int _val;
//    int _a;
//};
//
//int A::_val = 1;
//
//int main()
//{
//    A a1, a2;
//    a1._val = 1;
//    a2._val = 2;
//    std::cout << a2._val << std::endl;
//}

//#include <iostream>
//
//class A
//{
//public:
//    static int _val;
//};
//
//int A::_val;
//
//int main()
//{
//    A a;
//    //a._val = 1;
//    std::cout << A::_val << std::endl;
//
//    return 0;
//}

//class A
//{
//private:
//	static int _staticVal;
//	int _val;
//public:
//	int Add(int a, int b)
//	{
//		_val = a + b;
//		_staticVal = a + b;
//		return _val;
//	}
//	int Add2(int, int);
//	static int StaticAdd(int a, int b)
//	{
//		//_val = a + b;
//		_staticVal = a + b;
//		return _staticVal;
//	}
//};
//
//int A::Add2(int a, int b)
//{
//	_val = 1;
//	this->_val = a + b;
//	return a + b;
//}
//
//int A::_staticVal = 0;
//
//int main()
//{
//	A a;
//	a.Add(1, 1);
//	a.StaticAdd(1, 1);
//	A::StaticAdd(1, 1);
//	return 0;
//}



//class A
//{
//    friend void fun();//这叫 "友元声明"
//private:
//    int _val;
//};
//
//void fun()
//{
//    A a;
//    a._val = 1;//加上友元声明后, 就可以访问私有成员变量了
//}
//
//int main()
//{
//    return 0;
//}


class A
{
	friend void fun(A& a, B& b);
	//...
};

class B
{
	friend void fun(A& a, B& b);
	//...
};

void fun(A& a, B& b)
{
	//...
}

